草庐IT

c++ - std::byte 的用例

全部标签

unit-testing - 如何测试 bytes.ErrTooLarge panic 错误

我想在bytes.Buffer.Write方法上模拟bytes.ErrTooLargepanic错误并测试panic处理。我试图写入无限量的数据以超过内存,但随后整个测试崩溃了。还有哪些选择? 最佳答案 听起来像是模拟对象的工作。在测试期间使用此(badBuffer)代替bytes.Buffer。typebadBufferbytes.Bufferfunc(b*badBuffer)Write(p[]byte)(nint,errerror){panic(bytes.ErrTooLarge)}

go 测试用例未在主包中运行

这个问题在这里已经有了答案:WhyamIgetting"noteststorun"despitehavingatestfunction?(1个回答)关闭7个月前。我正在尝试编写一个简单的测试以更好地理解golang测试,但测试用例似乎没有执行,我预计它会失败。在我的main.go中我有:packagemainimport"fmt"funcmain(){fmt.Println("run")}functwoSum(nums[]int,targetint)[]int{lookup:=make(map[int]int)fori,n:=rangenums{c:=target-nifj,ok:=l

c - 与 c 相比,Go 的二进制大小

这个问题在这里已经有了答案:ReasonforhugesizeofcompiledexecutableofGo(3个答案)关闭6年前。昨天我只是想比较简单的golangHelloWorld应用程序和c,gobinary是2-3MB(只是fmt.Println)然而,等效的C代码只有大约20kb(printf)。然后我检查了两个二进制文件正在执行的系统调用,使用strace;两者之间没有太大区别,所以你知道为什么golang二进制文件与等效的c语言相比如此庞大吗?

Golang 而不是工作函数 bytes.Contains()

我对函数bytes.Contains(b,subslice[]byte)bool有奇怪的问题。它没有在函数(c*IPConn)Read(b[]byte)(int,error)中接收到的字节数组中找到字符。应用程序是一个简单的服务器。所以我有字节数组,它是通过服务器接收到变量bufbuf:=make([]byte,1024)Len,err:=c.conn.Read(buf)//belowreceivedcontentinbuf//{"abc":[{"b":5,"bca":14,"xyz":0}]}{"abc":[{"b":7,"hjk":14,"qwe":0}]}现在我想使用下面的函数在

c - 从 Golang 中的 c 函数返回字符串

我正在尝试在GO中调用C函数。这适用于某些扩展(对于整数)。但是,存在问题下面给出了一个最小的例子packagemain/*#include#include#includevoidmy_reverse(char*src,intlen,char*dst){dst=malloc(sizeof(char)*(len+1));printf("[c-part]src=%s\n",src);for(inti=0;i这是两个c函数,它们在c中分配一个新的缓冲区。但是,我得到了输出[c-part]src=HelloWorld[c-part]dst=dlroWolleH[gopart]dst=willr

go - 如何在golang中将 "11aacc"之类的字符串转换为十六进制值[]byte ("\x11\xaa\cc")

我想使用UDP发送内容为0x11AACC的数据包,“11AACC”是从数据库中获取的,所以它是字符串。我不知道怎么把它变成十六进制值11AACC,如果我用[]byte("11AACC")来转换它,它会变成6字节的内容。谢谢。 最佳答案 您可以使用encoding/hex包中的DecodeString将您的十六进制字符串转换为[]byte。示例:https://play.golang.org/p/t200M1LqJQ3packagemainimport("encoding/hex""fmt""log")funcmain(){s:="1

c - 找不到gmp库

我试着安装依赖gmp的pbc库。Dockerfile:FROMgolang:1.9.6-alpine3.7RUNmkdir-p/go/src/appWORKDIR/go/src/appCOPY./go/src/appRUNapkadd--updategitgccbuild-baseflexbisongmpRUNwgethttps://crypto.stanford.edu/pbc/files/pbc-0.5.14.tar.gz&&\tar-xvfpbc-0.5.14.tar.gz&&\cdpbc-0.5.14&&\./configure--prefix=$HOME/.local&&\m

c - 添加文件到/usr/local/include

我最近在一台linux机器上安装了openjtalk,我希望能够用Go包装它。openjtalk的源文件有几个不同来源的子文件夹,我假设是编译器找到的,因为有make文件。我应该将每个子文件夹复制到/usr/local/include中吗?这是修复包含依赖项的“正确”方法吗?根据我的测试,如果我复制包含的文件,Go似乎可以找到它们,但我不确定这是否是正确的linux做事方式。 最佳答案 更改外部库的位置通常不是一个好主意。有些库会自动将自己放入编译器的包含路径中,但对于那些不这样做的库,将它们的路径添加到编译器的包含路径中总是一个更

c - 如何将 char * 更改为等效的 Go

我有一些看起来像这样的C代码-*((Oid*)((char*)(tup)其中Oid是一个uint32类型,tup是一个结构。我想把它转换成golang。我已经解码了结构,但无法弄清楚如何将上面的行转换为golang。 最佳答案 Go等价于转换C指针是将指针转换为unsafe.Pointer,然后可以将其转换为您希望的任何类型的指针。如果tup是指向C中结构的指针,您可以将它转换为*uint32,如下所示:u:=(*uint32)(unsafe.Pointer(C.tup)) 关于c-如何

c - 不在 cgo 中显示 printf 结果

当我运行这段代码时,我希望打印出类似A:4,B:89的结果。但实际上,不显示任何内容。为什么这个程序不将结果显示到标准输出?main.go:packagemain/*#include"c.h"*/import"C"import("unsafe")typeSstruct{AintBint}funcmain(){s:=&S{A:4,B:89}pass_to_c:=(*C.S)(unsafe.Pointer(s))C.gostruct(pass_to_c)}c.h#include#includetypedefstruct{longintA;longintB;}S;externvoidgost